const jwt = require('jsonwebtoken')

const {createUser,CheckInfo,updataById,CheckData}=require('../service/user.service')
const {userRegisterError}=require('../consitant/error')
const {JWT_SECRET}=require('../config/config.default')
class UserController{
   async register(ctx,next){
        //获取数据
        //ctx.body=ctx.request.body
        //操作数据库
        const {username,password,nickname}=ctx.request.body
        //合法性,改为中间件
        
        //合理性,改为中间件
      
        //验证成功，可以注册写入数据库
        try{
            const res=await createUser(username,password,nickname)
            ctx.body={
                code:0,
                message:"注册成功",
                result:{
                    id:res.id,
                    username:res.username
                }
            }
        }catch(err){
           ctx.app.emit('error',userRegisterError,ctx)
        }

    }
   async index(ctx,next){
        ctx.body='默认主页'
    }
    async login(ctx,next){
   const {username}=ctx.request.body
   //获取用户信息，在token的payload中
   try{
       const res=await CheckInfo({username})
       const {password,...resUser}=res //从返回结果剔除password
       ctx.body={
           code:0,
           message:"用户登录成功",
           result:{
               userinfo:resUser,
               token:jwt.sign(resUser,JWT_SECRET,{expiresIn:'30d'})
           }
       }

      await next()
   }catch(err){
       console.log(err)
   }
    }
    async changePassword(ctx,next){
        //获取数据
        const id = ctx.state.user.id
        const password =ctx.request.body.password
        const nickname=ctx.request.body.nickname
        const userImage=ctx.request.body.userimage
        //操作数据库
        const res =await updataById({id,password,nickname,userImage})
        if(res){
            ctx.body={
                code:0,
                message:"修改信息成功",
                result:""
            }
        }else{
            ctx.body={
                code:10007,
                message:"修改信息失败",
                result:""
            }
        }
        
    }
    async checkInfo(ctx){
       const sheId=ctx.request.body.sheId
        const res= await CheckData(sheId)
        ctx.body={
           message:"成功",
            sheId:sheId,
            sheInfo:res

    }

}}

module.exports=new UserController()